package main.old.new_2023.last.month_8;


/**
 * @Description: todo 1768. 交替合并字符串
 * 给你两个字符串 word1 和 word2 。请你从 word1 开始，通过交替添加字母来合并字符串。
 * 如果一个字符串比另一个字符串长，就将多出来的字母追加到合并后字符串的末尾。
 *
 * todo 283. 移动零
 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 *
 * todo 162. 寻找峰值
 * 峰值元素是指其值严格大于左右相邻值的元素。
 * 给你一个整数数组 nums，找到峰值元素并返回其索引。数组可能包含多个峰值，在这种情况下，返回 任何一个峰值 所在位置即可。
 * 你可以假设 nums[-1] = nums[n] = -∞ 。
 *
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0815 {

    //寻找峰值
    public int findPeakElement(int[] nums) {
        int i = -1;
        int j = nums.length-1;
        while ( i +1 < j){
            int mid = i + (j - i) / 2;
            if (nums[mid] > nums[mid+1]){
                j = mid;
            }else {
                i = mid;
            }
        }
        return j;
    }


    //移动零
    public void moveZeroes(int[] nums) {
        for (int i = 0; i< nums.length-1;i ++){
            //找到0
            if (nums[i] == 0 ){
                for (int j = i+1; j< nums.length;j ++){
                    if (nums[j] != 0 ){
                        int temp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = temp;
                        break;
                    }
                }
            }
        }
    }

    //交替合并字符串 - 双指针
    public String mergeAlternately(String word1, String word2) {
        StringBuilder temp = new StringBuilder();
        char[] charA = word1.toCharArray();
        char[] charB = word2.toCharArray();
        int i = 0;
        int j = 0;
        while (i < charA.length || j < charB.length){
            if (i < charA.length){
                temp.append(charA[i]);
                i++;
            }
            if (j < charB.length){
                temp.append(charB[j]);
                j++;
            }
        }
        return temp.toString();
    }

}
